এই অধ্যায়ে আপনি স্ট্রাকচার(structure) এবং পয়েন্টার(pointer) সম্পর্কিত কিছু প্রাসঙ্গিক উদাহরণ দেখবেন যা আপনাকে স্ট্রাকচার থকে পয়েন্টার(pointer) ব্যবহার করে ডেটা এক্সেস(data access) করার জন্য সাহায্য করবে।
পয়েন্টার(pointer) ব্যবহার করে স্ট্রাকচার(structure) তৈরি এবং এক্সেস উভয়ই করা যেতে পারে। নিম্নের ন্যায় স্ট্রাকচার টাইপের পয়েন্টার ভ্যারিয়েবল তৈরি করা যেতে পারেঃ
struct name {
member1;
member2;
.
.
};
int main()
{
struct name *ptr;
}
উপরের প্রোগ্রামে struct name
টাইপের একটি পয়েন্টার ভ্যারিয়েবল(*ptr) তৈরি হয়েছে।
পয়েন্টারের মাধ্যমে স্ট্রাকচারের মেম্বার(member) কে দুইভাবে এক্সেস করা যায়ঃ
- পয়েন্টারকে অন্য এড্রেসে রেফার করে মেমোরি এক্সেস করা
- ডাইনামিক মেমোরি এলোকেশন(dynamic memory allocation) ব্যবহার করে।
পয়েন্টারের মাধ্যমে স্ট্রাকচারের মেম্বারকে এক্সেস করার জন্য সি প্রোগ্রামঃ
#include <stdio.h>
typedef struct person
{
int age;
float weight;
};
int main()
{
struct person *personPtr, person1;
personPtr = &person1; //person1 এর মেমোরি এড্রেসে পয়েন্টারকে রেফার করা
printf("Enter integer: ");
scanf("%d",&(*personPtr).age);
printf("Enter number: ");
scanf("%f",&(*personPtr).weight);
printf("Displaying: ");
printf("%d%f",(*personPtr).age,(*personPtr).weight);
return 0;
}
উপরের উদাহরণে struct person
টাইপের পয়েন্টার ভ্যারিয়েবলকে person1 ভ্যারিয়েবলের এড্রেসে রেফার(refer) করা হয়েছে। তাই শুধুমাত্র পয়েন্টারের মাধ্যমে স্ট্রাকচার মেম্বারকে এক্সেস(access) করা যায়।
স্ট্রাকচার এর পয়েন্টার মেম্বারকে এক্সেস করার জন্য ->(Arrow) অপারেটর ব্যবহার করা হয়।
.(Dot)
অপারেটর ব্যবহার করেও স্ট্রাকচার এর পয়েন্টার মেম্বারকে এক্সেস করতে পারেন।
(*personPtr).age এবং personPtr->age একই রকম
(*personPtr).weight এবং personPtr->weight একই রকম
পয়েন্টারের মাধ্যমে স্ট্রাকচারের মেম্বারকে এক্সেস করার জন্য malloc() ফাংশন ব্যবহার করে ডাইনামিকভাবে মেমোরি বরাদ্দ করা যেতে পারে।
ptr = (cast-type*) malloc(byte-size)
malloc() ফাংশন ব্যবহার করে পয়েন্টারের মাধ্যমে স্ট্রাকচারের মেম্বারকে এক্সেস করার জন্য সি প্রোগ্রাম
kt_satt_skill_example_id=536
common.read_more